package com.viamo.concilia.negocio;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class FormatoEntrada extends FormatoArchivo{

	private String fila_titulos;
	private String fila_inicial;
	private String hoja_activa;
	
	public FormatoEntrada(){
			super();
	};
	
	
	public FormatoEntrada(String name){
		super(name);
}


	public String getFila_titulos() {
		return fila_titulos;
	}


	public void setFila_titulos(String fila_titulos) {
		this.fila_titulos = fila_titulos;
	}


	public String getFila_inicial() {
		return fila_inicial;
	}


	public void setFila_inicial(String fila_inicial) {
		this.fila_inicial = fila_inicial;
	}
	
	
	public String getHoja_activa() {
		return hoja_activa;
	}


	public void setHoja_activa(String hoja_activa) {
		this.hoja_activa = hoja_activa;
	}


	public void parseFile(String fileName){
		
		
		File archivoExcel=new File(fileName);
		
		Workbook workbook;
		try {
			workbook = Workbook.getWorkbook(archivoExcel);
			
			int hoja_activa=Integer.parseInt(this.getHoja_activa());
			
			Sheet sheet = workbook.getSheet(hoja_activa); //Seleccionamos la hoja que vamos a leer
			
			int filaInicial=Integer.parseInt(this.getFila_inicial());
			int filaTitulos=Integer.parseInt(this.getFila_titulos());
			int cantColumnas=this.getCampos().size();
			int cantFilas= sheet.getRows();
			
			int columnaCC=0;
			
			
			cantFilas=10;
			
			String[] datos;
			String[] datos_ant;

			TipoDato[] tipos;
			
			tipos=new TipoDato[cantColumnas];
			
			for(int tipo=0;tipo<cantColumnas;tipo++){
				
				tipos[tipo]=this.getCampos().get(tipo).getTipoDato();
			}
			
			datos= new String[cantColumnas];
			datos_ant= new String[cantColumnas];
			Arrays.fill(datos, " ");
			
			
			String valorActual="";
			String valorAnterior="";
			
				
			for (int fila = 0; fila < cantFilas; fila++) { 
				
				copiaArray(datos,datos_ant);
				
				if ((fila==filaTitulos)||(fila>=filaInicial)){
					
					for (int columna = 0; columna < cantColumnas; columna++) { //recorremos las columnas
			
							datos[columna]=sheet.getCell(columna, fila).getContents().trim();
							
							if(columna==columnaCC){
								valorAnterior=valorActual;
								valorActual=datos[columnaCC];
							}
													
					}
					
					
					if((!(valorActual.equalsIgnoreCase("")))&&(valorAnterior.equalsIgnoreCase("")) && (!(fila==(cantFilas-1)) && (!(fila==0) ))){
						grabaArchivo(datos_ant);
						Arrays.fill(datos_ant, " ");
					}else if (!(valorActual.equalsIgnoreCase(""))&&!(valorAnterior.equalsIgnoreCase("")) ){
						grabaArchivo(datos_ant);
						Arrays.fill(datos_ant, " ");
					}else if (fila==(cantFilas-1)){
						datos_ant[1]+=datos[1];
					}
					
					}
				
			}
			
			grabaArchivo(datos_ant);
			
		} catch (BiffException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} //Pasamos el excel que vamos a leer
		
	}
	
private void grabaArchivo(String[] datos){
	
	for (int i=0;i<datos.length;i++){
		
		System.out.print(datos[i].trim()+";");
	}
	
	System.out.print("\n");

}

private void copiaArray(String d1[], String d2[]){
	
	for (int pos=0;pos<d1.length;pos++){
		
		if (!(d1[pos].trim()==null) && !(d1[pos].trim()==" ") ){
			if (d2[pos]==null){
				d2[pos]=d1[pos];
			}else{
				d2[pos]+=" ";
				d2[pos]+=d1[pos];
			}
		}
	}
	
}

	
}
	

